home *** CD-ROM | disk | FTP | other *** search
/ PCMania 32 / PCMania CD32_2.iso / sharewar / emula / zx81 / xtender.txt < prev    next >
Text File  |  1991-11-14  |  29KB  |  601 lines

  1.  
  2. -------------------------------------------------------------------------------
  3.  
  4.    ****   XTENDER ZX81 EMULATOR -- Very Preliminary Version 0.14   ****
  5.  
  6.                       by Carlo Delhez, November 1991
  7.  
  8. -------------------------------------------------------------------------------
  9. This file is in 80-column ASCII format. Use an ASCII editor to read the
  10. contents, import into your favourite word processor or copy directly to
  11. your printer (approximately 10 pages @ 60 lines/page).
  12. -------------------------------------------------------------------------------
  13.  
  14. NOTE: This programme is in a VERY early stage of development. Please keep
  15.       this in mind when reading the manual and running the programme. If
  16.       you are interested, look out for improved future versions!
  17.       All remarks and suggestions regarding XTender are welcome.
  18.  
  19.  
  20. PROGRAMME DESCRIPTION
  21.  
  22. XTender is - stated very accurately - a Z80 Emulator in a Sinclair ZX81
  23. environment, written for MS/DOS machines with a standard graphics adapter
  24. (Hercules, CGA, PCjr, EGA, MCGA or VGA). The Z80 Emulator is able to execute
  25. programmes written in the Z80 machine code language. The ZX81 environment
  26. includes the original ZX81 ROM and additionally caters for `hardware
  27. compatibility' (such as keyboard reading, screen output control and
  28. redirecting of signals originally heading for devices such as tape and
  29. lineprinter). The Z80 Emulator and the ZX81 environment are joined in a single
  30. block of 8086 machine code, which - as a whole - shall be referred to as ZX81
  31. Emulator, and is named XTender.
  32.  
  33.  
  34. REGISTRATION
  35.  
  36. XTender is distributed as ShareWare. You are allowed to make copies for
  37. other people, provided you copy ALL the files and do NOT make changes in
  38. any one of these files. Use XTender for a trial period of 21 days and then
  39. delete the files if you don't like to use the programme.
  40.  
  41. However, if you DO like to use XTender, please express your appreciation and
  42. support my efforts by becoming a REGISTERED user. You will then receive a
  43. nicely printed copy of this manual, you will be informed about new releases,
  44. and can update to a more recent version for a small fee to cover my costs.
  45. Registration also includes conversion of your programmes from tape to disk,
  46. free technical support by the author and the possibility to obtain a
  47. custom-made version of XTender to suit your specific hardware configuration.
  48. Also, it may be nice to set up an XTender Users Group to exchange programmes
  49. and ideas, or to create a large ZX81 programme libarary. All initiatives are
  50. welcome!
  51.  
  52. To become a registered XTender user, send a cheque or money order worth
  53. Hfl 50 (Holland), UK pound sterling 16 (United Kingdom) or US $ 30 (elsewhere)
  54. made payable to J.L.Delhez, plus a note stating your name, address and
  55. computer specs to me (address at the bottom of this document). The most recent
  56. version of XTender on a 3.5" DS/DD floppy (3M) and a printed copy of this
  57. manual will be dispatched you (sorry, no 5.25").
  58.  
  59. NOTE: Special permission needs to be requested from the author before
  60.       distributing XTender via Bulletin Boards or equivalent public domain
  61.       software distribution services. However, this text file may be
  62.       distributed freely without special permission.
  63.  
  64.  
  65. COMPATIBILITY
  66.  
  67. Since the original ZX81 ROM in Z80 code is included (with only a few minor
  68. changes, of no interest for ordinary use) almost complete software
  69. compatibility is guaranteed. Almost, since only some VERY specific software
  70. can obviously NOT be emulated: programmes using either standard or
  71. non-standard input/output ports (e.g. the ear/mic-lines and lines connected
  72. to external hardware devices not available on the PC such as sound-generators
  73. or EPROM programmers; note however that the keyboard and printer input-lines
  74. are emulated correctly), and programmes taking over the interrupt vector (e.g.
  75. Hi-Res and ZX81 sprite programmes, although the characterset can be redefined
  76. in the usual way) are NOT (yet) supported by XTender.
  77.  
  78. Apart from these exceptional applications, ANY programme running on the ZX81
  79. should ALSO run on XTender.
  80.  
  81.  
  82. COMPARISON
  83.  
  84. To name just a few advantages of XTender with respect to the ZX81: safe housing
  85. in a well-stabilized computer (none of the tricky business with wobbling RAM
  86. packs), full 64k RAM available (including POKEable ROM and 8-16k area),
  87. reliable and fast data-storage (no more tapes!), the ZX81 display file can be
  88. moved to any part of memory without a crash, machine code can also be executed
  89. in the top 32k of memory (on the ZX81 only the bottom 32k could be used), easy
  90. screen invert option, etc. etc.
  91.  
  92. A disadvantage may be operation speed. On slow machines, the processor
  93. emulation becomes quite dull. On fast machines, the speed becomes far too
  94. high for reasonable operation. Therefore, TWO versions of XTender are supplied:
  95. a speed optimized version for slow machines and a user-variable-speed version
  96. for fast machines. More about this in the next section.
  97.  
  98.  
  99. SPEED CONSIDERATIONS
  100.  
  101. As mentioned in the previous section, XTender might be too slow or too fast
  102. on your machine. As a solution, two versions of XTender are included. Let me
  103. first try to explain with an example why one programme with fixed speed would
  104. be insufficient.
  105.  
  106. I am developing XTender on a 33 MHz 386dx machine. On this machine, XTender
  107. spends about 30% of total time for printing the display using the 18.2 Hz
  108. interrupt, so 80% is left for Z80 emulation. Compared to the ZX81 itself,
  109. which spends 75% of the time for writing the display, this is not much.
  110. But taking into account the high speed of the processor, this is quite a lot.
  111. Nonetheless, the speed of the emulation amounts to 400% (slow version) or
  112. 600% (fast version) of the original ZX81 in SLOW mode.
  113. Now lets see what happens if you work on a slower machine, say 2 times slower.
  114. Automatically, the computer spends twice the time on the screen display,
  115. i.e. 60% of the total time. Only 40% of the time is left for Z80 emulation,
  116. but in this time it can also do only half of the work the other processor
  117. could do. Thus, the total speed with respect to the first case becomes
  118. 40%/80%/2 = 25%, i.e. with HALF the processor speed, the emulator gets FOUR
  119. times slower (yielding an effective speed of 100% and 150% respectively).
  120.  
  121. Generally, you would like to have emulation speed proportional to the processor
  122. speed of your computer. This means that you must cut down on screen output
  123. so that it is restricted to, say, 30% of total time. This is in fact what
  124. XTender does in the first second after start-up. It tests processor speed
  125. and tries to adapt the screen output frequency to (18.2/N) Hz, with N an
  126. integer (1,2,3,4,...) in order that less time is spent by the display
  127. interrupt. The number N is stored at ZX81 address 37, so you increase or
  128. decrease the screen frequency at will by POKEing this address.
  129.  
  130. All the above is nice for speeding up XTender, but what if you want to slow
  131. it down on a fast machine? The screen frequency cannot be raised above 18.2 Hz,
  132. so another process is needed for slowdown. The smoothest slowdown is obtained
  133. by delaying each separate Z80 instruction. This is done in the slow version
  134. of XTender and the delay can be changed by the user (ZX81 address 23).
  135.  
  136. More information about these facilities can be found in the section `Speeding
  137. Up and Slowing Down'.
  138.  
  139.  
  140. STARTING XTENDER
  141.  
  142. For running XTender, you need an MS/DOS machine with a standard graphics
  143. adapter (Hercules, CGA, PCjr, EGA, MCGA or VGA) and about 256k of free memory
  144. to store the programme and the required work space. Note that your MS/DOS
  145. version is not important (or should not be!).
  146.  
  147. As said earlier, the disk contains two versions of XTender. These are called
  148. XTENDERF.COM and XTENDERS.COM. The first is the fastest version and should be
  149. used on slow machines. The second one is not speed-optimized, hence slower.
  150. However, this one has the possibility to slow emulation down considerably and
  151. should be used on (very) fast machines. The user must determine by experience
  152. which one works best on his machine. My experience indicates that up to a
  153. 12 MHz AT or 16 MHz 386sx, the fast version works best. For faster machines,
  154. the slow version seems better.
  155.  
  156. To start the programme, simply type
  157.  
  158.       XTENDERF
  159.        or
  160.       XTENDERS
  161.  
  162. (whichever you prefer) at the DOS prompt. This will start up XTender. First,
  163. the screen will go black and stay black during one second. This is the
  164. processor speed test. Next, the screen should become completely white.
  165. Depending on the speed of your computer, you will see some flashes or some
  166. weird characters and text, but eventually the famous inverse-K-cursor should
  167. appear and XTender is ready for use.
  168.  
  169. Xtender tries to determine what video card you have installed (by looking at
  170. the current video mode) in order to make a destinction between Hercules and
  171. non-Hercules. In Hercules, only a small portion of the display will be used,
  172. in all other modes, the ZX81 screen occupies almost the entire display. If you
  173. have CGA emulation on your Hercules card and want to use it with XTender, make
  174. sure you do NOT start XTender with video mode 7 (you can see this, for example,
  175. with Norton SysInfo).
  176.  
  177.  
  178. KEYBOARD FACILTITIES
  179.  
  180. A problem for many users may be the keyboard: the ZX81 works with single
  181. keypress entries (e.g. pressing 'P' gives 'PRINT'). For the time being, you
  182. will need a ZX81 or ZX81 manual near your PC to look up all the special key
  183. presses for keywords, punctuation marks, functions and graphics. In the
  184. future, a help facility will be provided by XTender (under CTRL-F1).
  185.  
  186. The default ZX81 screen color is black characters on white background. For
  187. games with a lot of graphics this may be nice, but for text handling, I find
  188. the inverse more comfortable for the eyes. Press CTRL-F2 to change the display
  189. from black on white to white on black and vice versa.
  190.  
  191. Some ZX81 (machine coded) programmes do not allow you to stop them using
  192. Break (Shift-Space). On XTender, programmes can always be stopped using
  193. CTRL-ESC. This will actually cause a jump to an address in ROM where a RST 8
  194. for error D is located, and hence the stack is cleared, the error message is
  195. displayed and you are back in Basic. Some programmes crash the ZX81 if you try
  196. this, as they may have messed around with the system variables, Basic area,
  197. screen or even with the ROM code. If CTRL-ESC causes a ZX81 `hangup', press
  198. CTRL-ALT-ESC. This restores the original ROM code and subsequently executes
  199. a RST 0. ANY programme can safely be aborted using CTRL-ALT-ESC. Note that
  200. the PEEK values of addresses 23 and 37 are preserved!
  201.  
  202. For fun, enter the following commands:
  203.  
  204.     POKE 7687,85        { causes `rulers' }
  205.     NEW            { still rulers!   }
  206.     RAND USR 0        { no solution...  }
  207.     <CTRL-ALT-ESC>        { cured!      }
  208.  
  209. Avoid using CTRL-ESC in the Basic editor or when CBI Trace is active. In
  210. general, CTRL-ESC should only be used when the normal Break is disabled.
  211. If you use CTRL-ESC in the normal ZX81 editor, it will lock keyboard
  212. operation. Press CTRL-ESC once more to get proper key response again.
  213. In the CBI editor, CTRL-ESC merely produces a space character, i.e. does
  214. not lock the keyboard.
  215.  
  216.  
  217. KEYBOARD COMPATIBILITY
  218.  
  219. The ZX81 keyboard is totally different from the PC XT/AT keyboard. First
  220. of all, the ZX81 has only 40 keys. These are arranged according to the
  221. familiar QWERTY layout, yet - as you can imagine - 26 letter keys, 10
  222. number keys, Shift, Space and NewLine (Enter) already make a grand total of
  223. 39 keys. The remaining 40th key is a full stop (`.'). So: all symbols are
  224. hidden under Shifted keys and (to make things more complex) in a non-PC-like
  225. fashion. The ZX81 works in UPPER CASE only, so in fact you have 39 Shift
  226. options (barring Shift itself, all keys can be Shifted, including Space and
  227. NewLine (Enter)). Symbols are really scattered around the keyboard (can you
  228. imagine using Shift-`B' for `*' and Shift-`U' for `$' !?!) and you will really
  229. need the help facility and some patience for locating the symbols.
  230.  
  231. For UNshifted keys, the XTender maps almost the entire PC keyboard onto
  232. the ZX81 keyboard. Not only the 40 basic ZX81 keys, but also things like
  233. the Cursor Keys, BackSpace and the Numeric Pad are mapped. For example,
  234. if you press `Cursor Left', XTender will convert this to Shift-`5', the ZX81
  235. equivalent. This makes editting (and sometimes also playing games) less
  236. strenuous. The central key of the numeric pad (`5') generates Shift-Enter,
  237. i.e. toggles Function mode. More special keys: the square brackets (`[..]')
  238. become normal brackets (`(..)') and the single forward quote gives the
  239. standard ZX81 double quote. The ESC key generates Shift-1 (Edit), i.e. brings
  240. the current cursored BASIC line in the editor.
  241.  
  242. Also for SHIFTED keys, the emulator helps you a little bit. Pressing any one
  243. of the Shift keys will always give you the ZX81-Shifted symbol (like Shift-`U'
  244. for `$'). BUT, if you press ALT instead of SHIFT, you will get the PC-Shifted
  245. symbol, so you can press Alt-`4' to get the $tring sign. Some non-trivial
  246. ALTernatives are listed below:
  247.  
  248.         ALT-`6' gives `**'   (instead of `^')
  249.         ALT-`7' gives `AND'  (instead of `&')
  250.         ALT-`[' gives `<='   (instead of `{')
  251.         ALT-`]' gives `>='   (instead of `}')
  252.         ALT-`'' gives `""'   (instead of `"')
  253.  
  254. Note again, how the single forward quote (`'') is converted to a ZX81 double
  255. quote (`"') whereas the PC double quote is converted to a ZX81 quadruple quote
  256. (`""'). XTender effectively doubles quotes.
  257.  
  258. Finally, if CAPSLOCK is on, the effect of Shift is INVERTED for ALL keys (not
  259. only the letter keys). So, pressing for example `B' with CAPSLOCK on gives `*',
  260. and Shift-`B' gives `B'. Note that this can be nice for some games which use
  261. the keys 5 through 8 for steering and do not allow you to press Shift. With
  262. CAPSLOCK on you can use the arrow keys of the keyboard!
  263.  
  264.  
  265. FILE MANAGEMENT
  266.  
  267. Programmes can be SAVEd and LOADed in a format compatible to QZ (version 2.0
  268. or higher), a QL fileserver for the ZX81 (first launched December 1989,
  269. version 2.0 introduced August 1991; nota bene: QL stands for Quantum Leap, a
  270. 68000-based multitasking computer, marketed by Sinclair in 1984). A detailed
  271. description regarding the possibilities of QZ is omitted here. If you are
  272. interested in QZ, please contact me in writing (address at the bottom of this
  273. document).
  274.  
  275. The development of a QZ command interpreter for XTender is in preperation.
  276.  
  277. To SAVE or LOAD a programme, just type
  278.  
  279.           SAVE "<name>"
  280.           LOAD "<name>"
  281.  
  282. which are the equivalents of the QZ commands
  283.  
  284.           SAVE:P:<name>:
  285.           LOAD:P:<name>:
  286.  
  287. The files are SAVEd to and LOADed from the drive/path which was default when
  288. XTender was started. Another drive/pathname canNOT be included in the filename.
  289. The SAVEd programmes appear as `.P' files on the default drive/path.
  290.  
  291. LOADing a non-existing programme will NOT display any error. If you SAVE a
  292. programme which already existed, it will simply be overwritten without any user
  293. confirmation. Saving a file with a NAME of length zero results in the usual
  294. error F. Originally, QZ filenames were at most 12 characters long. On the PC,
  295. one is restricted to 8. So: only the first 8 characters of the SAVE/LOAD name
  296. will be used. Do NOT include INVERSE characters in the name, since these are
  297. used internally by the ZX81 to indicate the end of the filename.
  298.  
  299. Commands will be passed to the QZ server of XTender in a SAVE or LOAD
  300. statement. The first character must be an asterisk (`*'). Currently, this
  301. can only be used for quitting XTender. Typing
  302.  
  303.       LOAD "*EXIT"   or   LOAD "*QUIT"
  304.  
  305. will stop XTender and return to DOS. Any other command after the `*' will
  306. display error C (syntax error).
  307.  
  308.  
  309. PRINTER OUTPUT
  310.  
  311. No printer driver is available as yet. This will be implemented in future
  312. versions.
  313.  
  314.  
  315. HIGH RESOLUTION
  316.  
  317. In 1983, a first attempt to High Resolution on the ZX81 was presented when the
  318. High Resolution Toolkit by Richard Taylor was marketed. Later, companies like
  319. Software Farm produced several games in High Resolution. Taking a closer look
  320. at this 'High Resolution', one can easily see that it is not real Hi-Res: for
  321. the 256 bit patterns which are possible for 8 successive pixels, at most 128
  322. are available, i.e. more than half of the patterns cannot be used. The result
  323. of this Semi Hi-Res may however still be quite satisfactory.
  324.  
  325. As yet, no Hi-Res is supported by XTender. This will be implemented in future
  326. versions. Also, `real' hardware hi-res will be supported.
  327.  
  328.  
  329. ROM AND 8-16K AREA
  330.  
  331. The ROM and 8-16k area are in fact also part of RAM, i.e. they are not POKE-
  332. protected. This can be nice for making slight changes in the ZX81 ROM or for
  333. using the 8-16k area for machine code utilities that can be loaded from disk.
  334.  
  335. At startup, the 8-16k area contains an old verion of ZX-ASSEMBLER-2, a
  336. revised version of this well known Artic programme. In future version of
  337. XTender, this will be replaced by CORAL BASIC INTERPRETER (CBI version 7.0)
  338. The Assembler is started by typing:
  339.  
  340.           RAND USR 8192
  341.  
  342. No further comments on the use of the Assembler are given here.
  343.  
  344.  
  345. STOPPING
  346.  
  347. There is only one legal way to end your XTender session. A ZX81 LOAD or SAVE
  348. command with an asterisk and some text return you to DOS, e.g.
  349.  
  350.       LOAD "*Q"
  351.  
  352.  
  353. CLOCK FREQUENCY
  354.  
  355. The effective clock frequency can be determined in serveral ways. First of
  356. all, you can RUN a (long) BASIC programme which does not have any INPUT,
  357. INKEY$, RND, PAUSE or similar commands (i.e. execution time must be fully
  358. determinate and may not contain processor-independent loops). You can then
  359. compare the execution time on XTender to the time which this same programme
  360. requires on a ZX81.
  361.  
  362. The ZX81 runs at 3.2 MHz in FAST mode and at 0.8 MHz in SLOW mode. Supposing
  363. a programme on XTender takes two times longer to execute than on the ZX81
  364. in SLOW, the effective clock frequency is (0.8 MHz)/2 = 0.4 MHz.
  365.  
  366. Another way to find the clock frequency is to use a machine code test loop,
  367. embracing a single instruction which is executed many (e.g. 65536) times.
  368. If you then count the number of frames needed (and subtract the number of
  369. frames needed for just the empty loop) you can get an idea of the clock
  370. frequency of that specific instruction, provided you know the number of
  371. T-cycles the Z80 would normally need for that same instruction.
  372.  
  373. A very good estimate of the emulated processor speed can be obtained by
  374. LOADing the programme CLCKFREQ. This programme does some simple printing and
  375. plotting, but the final result is a reliable measure for the average speed.
  376.  
  377.  
  378. SLOWING DOWN OR SPEEDING UP
  379.  
  380. On slow machines, the performance of the emulator can be increased by reducing
  381. the screen output frequency. This frequency is given by
  382.  
  383.     F = (18.2 Hz)/(PEEK 37)
  384.  
  385. At startup, XTender tries to determine the best value for PEEK 37. POKEing a
  386. higher/lower value yourself can result in a significant increase/decrease of
  387. speed (test this with CLCKFREQ, see previous section). Note that a PEEK value
  388. of 0 hass the same effect as a PEEK value of 1.
  389.  
  390. On fast machines the speed of the emulator can be reduced by POKEing address
  391. 23. The byte at this address is used as delay counter at each Z80 instruction.
  392. Default value is 1, which gives (practically) no delay. A higher value will
  393. quickly slow down emulation. Do not use zero: this effectively reacts as 256,
  394. so you end up with an extremely slow emulator.
  395.  
  396. Example of SLOWDOWN on a 33 MHz 80386dx machine:
  397.  
  398.     PEEK 23     Speed        Frequency
  399.  
  400.     1        425%        3.40 MHz
  401.     2        362%        2.88 MHz
  402.     5        246%        1.96 MHz
  403.     10        160%        1.28 MHz
  404.     20         95%        0.76 MHz
  405.  
  406. The slowdown only works if you are using XTENDERS (i.e. not with XTENDERF).
  407. The speeding up by POKEing address 37 works with both versions.
  408.  
  409.  
  410. Z80 EMULATION
  411.  
  412. As far as I have been able to test, all Z80 instructions are emulated
  413. correctly: since the ZX81 ROM is the basis for XTender to function, the
  414. latter statement must be true. Also, many ZX81 programmes have been
  415. tested on XTender and all of them turned out to work without any problem!
  416. (These programmes include (commercially marketed) games and utilities in
  417. BASIC and in machine code!)
  418.  
  419. Some brief remarks for Z80 freaks:
  420.  
  421. * The Subtract flag of the Z80 flag-register (f) is NOT emulated. Many Z80
  422.   instructions alter this flag, but there is only one instruction which uses
  423.   the result, viz. DAA. Since DAA is used only once in the ZX81 ROM (where it
  424.   has been replaced by an equivalent non-standard Z80 instruction) and since
  425.   proper emulation of the Subtract Flag reduces operation speed of XTender, I
  426.   think this exclusion is a sensible decision. Note that, when XTender
  427.   encounters a DAA instruction, it performs a `Decimal Adjust After Addition'.
  428.   So, keep your fingers crossed!
  429.  
  430.   Programmes using DAA : --- Reversi (only the machine coded version)
  431.                          --- MCTT (Machine Code Testing Tool)
  432.              --- Frogger
  433.  
  434.   If you should know of other programmes which use DAA, please tell me!
  435.  
  436. * The IN instructions are all neglected, except for requests for port $FE,
  437.   (the keyboard) and port $FB (the printer). Also, OUT instructions are
  438.   neglected. Note, however, that the instructions IND, INDR, INI, INIR, OUTD,
  439.   OTDR, OUTI and OTIR alter the registers BC and HL (and also (HL)'s)
  440.   appropriately!
  441.  
  442. * HALT waits for an interrupt. Interrupts are not emulated and therefore
  443.   HALT is made equal to NOP.
  444.  
  445. * Some instructions cannot be used for changing the ROM area (0-8k). These are:
  446.  
  447.           LD (HL),A           LD (DE),A
  448.           LD (HL),D           LD (HL),E
  449.           LDIR
  450.  
  451.   The reason for this is to protect the ROM against itself! The programmers of
  452.   the ZX81 ROM have made use of the write-protection of the 0-8k area for
  453.   simplifying their code (or is it a hitherto unknown bug of the ZX81 ROM ?).
  454.   So, XTender (which has no write-protection in the ROM area) would alter
  455.   its own code, which is (in general!) a bad thing. Therefore, the above
  456.   instructions are emulated such that they have no effect in the first 8k of
  457.   memory.
  458.   Note that this also protects the ROM against a programme like MCODER-2, which
  459.   does the same kind of nasty things to the ZX81 ROM-area...
  460.  
  461.  
  462. WRITING PROGRAMMES
  463.  
  464. For the success of XTender and perhaps for a revival of the ZX81, I recommend
  465. authors of new programmes (either in machine code or in BASIC) to write their
  466. software such that it will run on both XTender and on the ZX81. As an
  467. example, you could perform nice tricks with XTender by POKEing its ROM, but
  468. that is not possible on the ordinary ZX81, i.e. INCOMPATIBLE! Please avoid such
  469. tricks or - if they are absolutely necessary - clearly include a message
  470. telling on which machine(s) the programme runs (ZX81, XTender, XTricator or
  471. the Atari Emulator). I also advise to use processor independent delay loops
  472. where necessary (mostly games and editors). Basically, these look like this:
  473.  
  474.         REPEAT
  475.           SET CLOCK
  476.           BEGIN
  477.             PERFORM ACTION
  478.           END
  479.           REPEAT
  480.             READ CLOCK
  481.           UNTIL CERTAIN TIMELIMIT EXCEEDED
  482.         FOREVER
  483.  
  484. Programmes written this way are equally fast on every computer (unless the
  485. ACTION part takes more time than given by CERTAIN TIMELIMIT). In fact, several
  486. existing ZX81 programmes were really written this way and are consequently
  487. not sped up by a fast emulator (only decelerated by a slow one...)!
  488. For reading and setting the clock, make use of the system variable Frames.
  489. Frames is a two-byte number, decrementing at 50 Hz. Please note that
  490.  
  491.       (1) Frames is decremented in SLOW mode ONLY on the ZX81;
  492.       (2) Frames is decremented in FAST AND SLOW mode on XTender; it is
  493.       decremented by 2 or 3 each 55 ms, not by 1 each 20 ms. It is,
  494.       however, properly synchronized.
  495.  
  496. Also in BASIC programmes, use Frames (or PAUSE) instead of some empty FOR-NEXT
  497. loop.
  498.  
  499.  
  500. PROGRAMME TRANSPORTATION
  501.  
  502. Some trouble is caused by the fact that ZX81 programmes were usually stored on
  503. tape instead of disk. Please write me for info on possible solutions!
  504.  
  505.  
  506. OTHER ZX81 EMULATORS
  507.  
  508. The PC is not the only computer for which a ZX81 emulator has been written.
  509. An equivalent ZX81 emulator has also been written for the SINCLAIR QL and for
  510. the ATARI ST computers. The emulator for the Sinclair QL is called XTricator
  511. and is written by myself. It is completely compatible to XTender as far
  512. as file formats are concerned. This development of XTricator was started in
  513. 1989 and this programme offers far more possibilities than XTender (let alone
  514. the multitasking capabilities of the QL!). But, future versions of XTender will
  515. increasingly more resemble XTricator!
  516.  
  517. I have no personal experience with the emulator written for the ATARI, but
  518. it seems that programmes running on that emulator can be LOADed directly
  519. into XTender/XTricator and RUN without problems.
  520.  
  521. Note that the files with extension '81' on the ATARI emulator are compatible
  522. to the 'P' files of XTender and XTricator.
  523.  
  524. It seems that the ATARI emulator has problems to LOAD files not SAVEd by
  525. the emulator itself (again, I have no personal experience). As far as I know,
  526. XTender/XTricator 'P' files cannot be converted to ATARI '81' files because of
  527. this 'sensitivity'. It is ofcourse the virtue of XTender and XTricator that it
  528. DOES work the other way round!
  529.  
  530.  
  531. WARRANTY
  532.  
  533. If you come across a ZX81 programme which doesn't work on XTender and also
  534. doesn't fall in any of the "incompatibility catagories" discussed in this
  535. manual, please send me a copy of the programme on a 3.5" floppy. If XTender
  536. is to blame, you will receive a new (repaired!) version of XTender for free.
  537.  
  538.  
  539. ABOUT THE AUTHOR
  540.  
  541. I was born in 1967 and bought my first computer (guess what, it was a ZX81!)
  542. in 1982. With no prior programming experience at all, I started writing simple
  543. Basic programmes. After about one year, it appeared to me that Basic just
  544. couldn't solve the problems I devised. So, I turned to Z80 machine code (with
  545. obliging help of Toni Baker; that is, of her book). A whole new world of
  546. possibilities opened up before my very eyes. High-speed compact code and access
  547. to all system utilities at lowest level, what else does a programmer need?
  548. Many Z80 programmes were born, and some of them were even published in
  549. international magazines. In 1987, I decided to buy a QL (during sales) and
  550. found this younger brother (sister?) just as interesting as the ZX81. It also
  551. gave me a good excuse for learning 68000 machine code. As I saw that less and
  552. less people were actually using the ZX81, I sought a way for elongating its
  553. existence. I thought that (amongst other things) a ZX81 emulator for the QL
  554. would be a good way to do so, and I started writing this programme in the end
  555. of 1989. My present-day occupation as an engineer of physics obliged me to
  556. buy an MS/DOS machine. In order to stay loyal to the absorbing machines made
  557. by Sinclair, I decided to write a ZX81 emulator for MS/DOS. The 8086 is very
  558. similar to the Z80, so I did not really have to learn a new language, only
  559. a new OS. By now, in 1991, you can judge the result of my efforts. I sincerely
  560. hope that many (former) ZX81 users will take some time to leap back in
  561. history and (re)enjoy the overwhelming simplicity of the 64k, 8-bit, 3.2 MHz
  562. Z80, black & white computer with 64x44 graphics resolution, which introduced
  563. over a million people worldwide (including myself) to the wonderful world of
  564. computing...
  565.  
  566.  
  567. XTENDER RELEASE HISTORY
  568.  
  569. Version   Date              Remarks
  570.  
  571. < 1.00      < November 1991   Illegal preliminary versions, likely to contain
  572.                             undocumented features and bugs. Use at your own
  573.                 risk or write me to become a registered XTender
  574.                             user.
  575.  
  576. 1.00      > November 1991   First official release.
  577.  
  578.  
  579. FINAL NOTES
  580.  
  581. All rights of XTender and this manual reserved by law (copyright);
  582. Consequently: UNAUTHORIZED copying, hiring and lending prohibited
  583. (please refer to section "Registration" for more details).
  584. Just to keep the lawyers happy: ZX81, QL and QDOS are registered trademarks
  585. of Sinclair Research Limited.
  586. For more information on XTender, XTricator, QZ, ZX-Assembler-2, Coral Basic
  587. Interpreter or ZX81 in general, do not hesitate to contact me at subjoined
  588. address in writing:
  589.  
  590.  
  591.           Carlo Delhez,
  592.           Emmastraat 3,
  593.       4651 BV Steenbergen,
  594.           Netherlands.
  595.  
  596.  
  597. Thank you for reading the manual & for using XTender !!
  598.  
  599.  
  600. <*** End of File ***>
  601.